parte del documento no consta de las propiedades planDetails planId y su error de retorno "no se puede convertir indefinido en un objeto, pero tengo que buscar ese documento si estas propiedades existen o no, ¿cómo puedo evitar este error?
this.profile.find({ userId: ObjectId(req.id) }).populate("planId").lean().exec(function(err, profileFound) { console.log(profileFound); if (err) return callback(err); if (profileFound && profileFound.length === 0) { return callback(false, common.errorMsg("PROFILE DOES NOT EXIST")); } else { var profileData = profileFound[0]; profileData["isPlanTaken"] = false; profileData["planDetails"] = {}; if(profileData.hasOwnProperty("planId") && profileData.planId){ if(Object.keys(profileData.planId).length>0){ profileData["isPlanTaken"]=true; profileData["planDetails"]=profileData.planId; } } return callback( false, common.successMsg("PROFILE FETCHED",profileData ) ); } });Creo que faltaba la inicialización de la variable profileData solamente...
const profileData = {}; profileData["isPlanTaken"] = false; console.log(profileData); profileData["planDetails"] = {}; if(profileData.hasOwnProperty("planId") && Object.keys(profileData.planId)){ profileData["isPlanTaken"]=true; profileData["planDetails"]=profileData.planId; } console.log(profileData);Y creo que eso también es suficiente para verificar que existe una propiedad en un objeto. Por favor me puedes dar mas datos por ejemplo, porque no se muy bien que es lo que necesitas.
const profileData = {}; profileData.isPlanTaken = false; console.log(profileData); profileData.planId = 5; // for example if (profileData.planId) { profileData.isPlanTaken = true; profileData.planDetails = profileData.planId; } console.log(profileData);